﻿// owner 蒋家伟

#pragma once
#include "IArgs.h"
#include "DataSchema_home.h"

namespace jsdk
{
    class IDocument;
    enum class DocumentChangedType : uint8_t
    {
        Undefined = 0,
        BeforeUnserialize = 1,              // 反序列化前
        AfterUnserialize = 2,               // 反序列化后，Element对象数据完整
        AfterOpenDocument = 3,              // 打开一个文档，当数据完全准备好之后，此时文档数据完整(例如RunTimeId生成)
        BeforeClose = 4                     // 关闭前
    };

    class DATASCHEMA_EXPORT IDocumentChangedEventArgs : public IArgs
    {
        DEFINE_DRIVER_FROM(IDocumentChangedEventArgs, IArgs)
    public:
        virtual ~IDocumentChangedEventArgs() {}

        /// \ brief 获取DocumentChanged的状态
        /// \ return DocumentChanged
        virtual const DocumentChangedType& getDocumentChangedType() const = 0;

        /// \ brief 获取当前的文档指针
        /// \ return 文档指针
        virtual const IDocument* getDocument() const = 0;
    };
}
